{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import random\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from datetime import datetime\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.layers import *\n",
    "from tensorflow.keras.models import *\n",
    "from tensorflow.keras.callbacks import *\n",
    "from tensorflow.keras.optimizers import *\n",
    "\n",
    "from pandas.plotting import register_matplotlib_converters\n",
    "register_matplotlib_converters()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(17379, 17)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>hr</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.2879</td>\n",
       "      <td>0.81</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.22</td>\n",
       "      <td>0.2727</td>\n",
       "      <td>0.80</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>32</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.22</td>\n",
       "      <td>0.2727</td>\n",
       "      <td>0.80</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5</td>\n",
       "      <td>27</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.2879</td>\n",
       "      <td>0.75</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.24</td>\n",
       "      <td>0.2879</td>\n",
       "      <td>0.75</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant     dteday  season  yr  mnth  hr  holiday  weekday  workingday  \\\n",
       "0        1 2011-01-01       1   0     1   0        0        6           0   \n",
       "1        2 2011-01-01       1   0     1   1        0        6           0   \n",
       "2        3 2011-01-01       1   0     1   2        0        6           0   \n",
       "3        4 2011-01-01       1   0     1   3        0        6           0   \n",
       "4        5 2011-01-01       1   0     1   4        0        6           0   \n",
       "\n",
       "   weathersit  temp   atemp   hum  windspeed  casual  registered  cnt  \n",
       "0           1  0.24  0.2879  0.81        0.0       3          13   16  \n",
       "1           1  0.22  0.2727  0.80        0.0       8          32   40  \n",
       "2           1  0.22  0.2727  0.80        0.0       5          27   32  \n",
       "3           1  0.24  0.2879  0.75        0.0       3          10   13  \n",
       "4           1  0.24  0.2879  0.75        0.0       0           1    1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### READ DATA ###\n",
    "\n",
    "df = pd.read_csv('hour.csv')\n",
    "df['dteday'] = pd.to_datetime(df.dteday)\n",
    "\n",
    "print(df.shape)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>min</th>\n",
       "      <th>max</th>\n",
       "      <th>mean</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>yr</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>272</td>\n",
       "      <td>28.600578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>367</td>\n",
       "      <td>42.679757</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    min  max       mean\n",
       "yr                     \n",
       "0     0  272  28.600578\n",
       "1     0  367  42.679757"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### CASUAL COUNT STATISTICS ###\n",
    "\n",
    "df.groupby('yr')['casual'].agg(['min','max','mean'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "### DEFINE CRPS METRIC ###\n",
    "\n",
    "def crps(y_true, y_pred):\n",
    "    y_true = np.clip(np.cumsum(y_true, axis=1), 0, 1)\n",
    "    y_pred = np.clip(np.cumsum(y_pred, axis=1), 0, 1)\n",
    "    return ((y_true-y_pred)**2).sum(axis=1).sum(axis=0) / (y_true.shape[1]*y_true.shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['season', 'yr', 'mnth', 'hr', 'holiday', 'weekday', 'workingday', 'weathersit', 'temp', 'atemp', 'hum', 'windspeed']\n"
     ]
    }
   ],
   "source": [
    "### DEFINE REGRESSOR COLUMNS ###\n",
    "\n",
    "columns = [c for c in df.columns if c not in ['instant','dteday','casual','registered','cnt']]\n",
    "print(columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(8645, 12) (2894, 12) (5840, 12)\n"
     ]
    }
   ],
   "source": [
    "### TRAIN, VALIDATION, TEST SPLIT AND SCALING ###\n",
    "\n",
    "scaler = StandardScaler()\n",
    "\n",
    "y_train = df[df.dteday < datetime(2012, 1, 1)].casual.copy().values\n",
    "train_date = df[df.dteday < datetime(2012, 1, 1)].dteday.copy()\n",
    "train_h = df[df.dteday < datetime(2012, 1, 1)].hr.copy()\n",
    "X_train = df[df.dteday < datetime(2012, 1, 1)][columns].copy()\n",
    "X_train = scaler.fit_transform(X_train)\n",
    "\n",
    "y_val = df[(df.dteday >= datetime(2012, 1, 1))&(df.dteday < datetime(2012, 5, 1))].casual.copy().values\n",
    "val_date = df[(df.dteday >= datetime(2012, 1, 1))&(df.dteday < datetime(2012, 5, 1))].dteday.copy()\n",
    "val_H = df[(df.dteday >= datetime(2012, 1, 1))&(df.dteday < datetime(2012, 5, 1))].hr.copy()\n",
    "X_val = df[(df.dteday >= datetime(2012, 1, 1))&(df.dteday < datetime(2012, 5, 1))][columns].copy()\n",
    "X_val = scaler.transform(X_val)\n",
    "\n",
    "y_test = df[df.dteday >= datetime(2012, 5, 1)].casual.copy().values\n",
    "test_date = df[df.dteday >= datetime(2012, 5, 1)].dteday.copy()\n",
    "test_H = df[df.dteday >= datetime(2012, 5, 1)].hr.copy()\n",
    "X_test = df[df.dteday >= datetime(2012, 5, 1)][columns].copy()\n",
    "X_test = scaler.transform(X_test)\n",
    "\n",
    "print(X_train.shape, X_val.shape, X_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1f36afdbcc0>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7MAAAFlCAYAAAA55r90AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdebgUxb038G+JCBqJImiCoIF4jbmuEInBuFz1Gtdct2wkMdtNrubGuCUaxahxI9ckanw1UaNxj0twibsGVHBFDSAgoOwgOwdk38859f7RM545c3q6q7qruqq7v5/n4ZnDdHdVTU9Pd/+6NiGlBBEREREREVGebOW6AERERERERES6GMwSERERERFR7jCYJSIiIiIiotxhMEtERERERES5w2CWiIiIiIiIcofBLBEREREREeXO1q4LkEbPnj1l3759XReDiIiIiIiILBg7duwyKeXOYctyHcz27dsXY8aMcV0MIiIiIiIiskAIMbfRMjYzJiIiIiIiotxhMEtERERERES5w2CWiIiIiIiIcifXfWaJiIiIiIiKbMuWLZg/fz42btzouihWde3aFX369EHnzp2Vt2EwS0RERERE5Kn58+ejW7du6Nu3L4QQrotjhZQSy5cvx/z589GvXz/l7djMmIiIiIiIyFMbN25Ejx49ChvIAoAQAj169NCufWYwS0RERERE5LEiB7JVST4jg1kiIiIiIiIKtXLlStxyyy3a251wwglYuXKlhRK1YTBLREREREREoRoFsy0tLZHbPffcc9hxxx1tFQsAB4AiIiIiIiKiBi6++GLMnDkT/fv3R+fOnbH99tujV69eGD9+PKZMmYJTTjkF8+bNw8aNG3HuuefijDPOAAD07dsXY8aMwdq1a3H88cfj0EMPxZtvvonevXvjySefxLbbbpu6bAxmiYiIiIiIcuC884Dx482m2b8/cOONjZdfe+21mDRpEsaPH49Ro0bhxBNPxKRJkz4edfiuu+7CTjvthA0bNuCLX/wivva1r6FHjx7t0pg+fToeeugh3HHHHfjmN7+Jxx57DKeffnrqsrOZMREREZVTy2ZgzQzXpSAiypWDDjqo3fQ5N910Ew444AAMGjQI8+bNw/Tp0zts069fP/Tv3x8AcOCBB2LOnDlGysKaWSIiIiqnMT8HZt4BnNYEdO3pujRE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\n",
      "text/plain": [
       "<Figure size 1152x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### CASUAL COUNT PLOT ###\n",
    "\n",
    "plt.figure(figsize=(16,6))\n",
    "\n",
    "plt.plot([d + np.timedelta64(h, 'h') for d,h in zip(train_date, train_h)], y_train, label='train', color='blue')\n",
    "plt.plot([d + np.timedelta64(h, 'h') for d,h in zip(val_date, val_H)], y_val, label='val', color='orange')\n",
    "plt.plot([d + np.timedelta64(h, 'h') for d,h in zip(test_date, test_H)], y_test, label='test', color='red')\n",
    "plt.ylabel('casual cnt')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1f36b1b22b0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### CASUAL COUNT DISTRIBUTION ###\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "\n",
    "plt.hist(y_train, label='train', bins=25, alpha=0.5, color='blue')\n",
    "plt.hist(y_val, label='val', bins=25, alpha=0.5, color='orange')\n",
    "plt.hist(y_test, label='test', bins=25, alpha=0.5, color='red')\n",
    "plt.ylabel('frequency'); plt.xlabel('casual cnt')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "### DEFINE MAX PLAUSIBLE CASUAL COUNT ###\n",
    "\n",
    "max_count = 400"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1f36b2be630>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### CDF CASUAL COUNT PLOT ###\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "\n",
    "plt.hist(y_train, range=(0,max_count), bins=30, \n",
    "         cumulative=True, density=True, alpha=0.5, color='blue')\n",
    "cdf_train = np.histogram(y_train, range=(0,max_count), bins=max_count, density=True)[0].cumsum()\n",
    "plt.plot(cdf_train, c='blue', linewidth=3, label='train')\n",
    "\n",
    "plt.hist(y_val, range=(0,max_count), bins=30, \n",
    "         cumulative=True, density=True, alpha=0.4, color='orange')\n",
    "cdf_val = np.histogram(y_val, range=(0,max_count), bins=max_count, density=True)[0].cumsum()\n",
    "plt.plot(cdf_val, c='orange', linewidth=3, label='val')\n",
    "\n",
    "plt.hist(y_test, range=(0,max_count), bins=30, \n",
    "         cumulative=True, density=True, alpha=0.3, color='red')\n",
    "cdf_test = np.histogram(y_test, range=(0,max_count), bins=max_count, density=True)[0].cumsum()\n",
    "plt.plot(cdf_test, c='red', linewidth=3, label='test')\n",
    "\n",
    "plt.ylabel('cdf'); plt.xlabel('casual cnt')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "### CREATE TARGETS FOR REGRESSION AND CLASSIFICATION ###\n",
    "\n",
    "y_train_reg = np.zeros((len(y_train), max_count))\n",
    "y_val_reg = np.zeros((len(y_val), max_count))\n",
    "y_test_reg = np.zeros((len(y_test), max_count))\n",
    "\n",
    "y_train_clas = np.zeros((len(y_train), max_count))\n",
    "y_val_clas = np.zeros((len(y_val), max_count))\n",
    "y_test_clas = np.zeros((len(y_test), max_count))\n",
    "\n",
    "\n",
    "for i,cnt in enumerate(y_train):\n",
    "    y_train_reg[i, cnt:] = 1\n",
    "    y_train_clas[i, cnt] = 1\n",
    "    \n",
    "for i,cnt in enumerate(y_val):\n",
    "    y_val_reg[i, cnt:] = 1\n",
    "    y_val_clas[i, cnt] = 1\n",
    "    \n",
    "for i,cnt in enumerate(y_test):\n",
    "    y_test_reg[i, cnt:] = 1\n",
    "    y_test_clas[i, cnt] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "### DEFINE MODEL STRUCTURES FOR REGRESSION AND CLASSIFICATION ###\n",
    "\n",
    "def set_seed(seed):\n",
    "    \n",
    "    tf.random.set_seed(seed)\n",
    "    os.environ['PYTHONHASHSEED'] = str(seed)\n",
    "    np.random.seed(seed)\n",
    "    random.seed(seed)\n",
    "\n",
    "\n",
    "def get_model_reg():\n",
    "    \n",
    "    set_seed(33)\n",
    "    \n",
    "    opt = Adam(lr=0.01)\n",
    "    \n",
    "    inp = Input(shape=(len(columns)))\n",
    "    x = Dense(512, activation='relu')(inp)\n",
    "    x = Dropout(0.3)(x)\n",
    "    x = Dense(256, activation='relu')(x)\n",
    "    x = Dropout(0.2)(x)\n",
    "    x = Dense(256, activation='relu')(x)\n",
    "    out = Dense(max_count, activation='sigmoid')(x)\n",
    "    \n",
    "    model = Model(inp, out)\n",
    "    model.compile(optimizer=opt, loss='mse')\n",
    "    \n",
    "    return model\n",
    "    \n",
    "    \n",
    "def get_model_clas():\n",
    "    \n",
    "    set_seed(33)\n",
    "    \n",
    "    opt = Adam(lr=0.0001)\n",
    "    \n",
    "    inp = Input(shape=(len(columns)))\n",
    "    x = Dense(512, activation='relu')(inp)\n",
    "    x = Dropout(0.3)(x)\n",
    "    x = Dense(256, activation='relu')(x)\n",
    "    x = Dropout(0.2)(x)\n",
    "    x = Dense(256, activation='relu')(x)\n",
    "    out = Dense(max_count, activation='softmax')(x)\n",
    "    \n",
    "    model = Model(inp, out)\n",
    "    model.compile(optimizer=opt, loss='categorical_crossentropy')\n",
    "    \n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NEURAL NETWORK WITH REGRESSION"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 8645 samples, validate on 2894 samples\n",
      "Epoch 1/100\n",
      "8645/8645 - 2s - loss: 0.0589 - val_loss: 0.0593\n",
      "Epoch 2/100\n",
      "8645/8645 - 1s - loss: 0.0339 - val_loss: 0.0425\n",
      "Epoch 3/100\n",
      "8645/8645 - 1s - loss: 0.0230 - val_loss: 0.0326\n",
      "Epoch 4/100\n",
      "8645/8645 - 1s - loss: 0.0199 - val_loss: 0.0333\n",
      "Epoch 5/100\n",
      "8645/8645 - 1s - loss: 0.0193 - val_loss: 0.0308\n",
      "Epoch 6/100\n",
      "8645/8645 - 1s - loss: 0.0184 - val_loss: 0.0321\n",
      "Epoch 7/100\n",
      "8645/8645 - 1s - loss: 0.0178 - val_loss: 0.0350\n",
      "Epoch 8/100\n",
      "8645/8645 - 1s - loss: 0.0176 - val_loss: 0.0297\n",
      "Epoch 9/100\n",
      "8645/8645 - 1s - loss: 0.0169 - val_loss: 0.0295\n",
      "Epoch 10/100\n",
      "8645/8645 - 1s - loss: 0.0158 - val_loss: 0.0282\n",
      "Epoch 11/100\n",
      "8645/8645 - 1s - loss: 0.0153 - val_loss: 0.0310\n",
      "Epoch 12/100\n",
      "8645/8645 - 1s - loss: 0.0152 - val_loss: 0.0278\n",
      "Epoch 13/100\n",
      "8645/8645 - 1s - loss: 0.0153 - val_loss: 0.0305\n",
      "Epoch 14/100\n",
      "8645/8645 - 1s - loss: 0.0149 - val_loss: 0.0285\n",
      "Epoch 15/100\n",
      "8645/8645 - 1s - loss: 0.0148 - val_loss: 0.0277\n",
      "Epoch 16/100\n",
      "8645/8645 - 1s - loss: 0.0149 - val_loss: 0.0286\n",
      "Epoch 17/100\n",
      "8645/8645 - 1s - loss: 0.0146 - val_loss: 0.0291\n",
      "Epoch 18/100\n",
      "8645/8645 - 1s - loss: 0.0147 - val_loss: 0.0281\n",
      "Epoch 19/100\n",
      "8645/8645 - 1s - loss: 0.0144 - val_loss: 0.0288\n",
      "Epoch 20/100\n",
      "8645/8645 - 1s - loss: 0.0146 - val_loss: 0.0277\n",
      "Epoch 21/100\n",
      "8645/8645 - 1s - loss: 0.0144 - val_loss: 0.0292\n",
      "Epoch 22/100\n",
      "8645/8645 - 1s - loss: 0.0143 - val_loss: 0.0282\n",
      "Epoch 23/100\n",
      "8645/8645 - 1s - loss: 0.0143 - val_loss: 0.0276\n",
      "Epoch 24/100\n",
      "8645/8645 - 1s - loss: 0.0142 - val_loss: 0.0276\n",
      "Epoch 25/100\n",
      "8645/8645 - 1s - loss: 0.0142 - val_loss: 0.0265\n",
      "Epoch 26/100\n",
      "8645/8645 - 1s - loss: 0.0140 - val_loss: 0.0269\n",
      "Epoch 27/100\n",
      "8645/8645 - 1s - loss: 0.0142 - val_loss: 0.0280\n",
      "Epoch 28/100\n",
      "8645/8645 - 1s - loss: 0.0140 - val_loss: 0.0301\n",
      "Epoch 29/100\n",
      "8645/8645 - 1s - loss: 0.0140 - val_loss: 0.0269\n",
      "Epoch 30/100\n",
      "8645/8645 - 1s - loss: 0.0140 - val_loss: 0.0288\n",
      "Epoch 31/100\n",
      "8645/8645 - 1s - loss: 0.0139 - val_loss: 0.0278\n",
      "Epoch 32/100\n",
      "8645/8645 - 1s - loss: 0.0138 - val_loss: 0.0267\n",
      "Epoch 33/100\n",
      "8645/8645 - 1s - loss: 0.0138 - val_loss: 0.0273\n",
      "Epoch 34/100\n",
      "8645/8645 - 1s - loss: 0.0139 - val_loss: 0.0293\n",
      "Epoch 35/100\n",
      "Restoring model weights from the end of the best epoch.\n",
      "8645/8645 - 1s - loss: 0.0136 - val_loss: 0.0281\n",
      "Epoch 00035: early stopping\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.keras.callbacks.History at 0x1f3732f51d0>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "es = EarlyStopping(monitor='val_loss', mode='auto', restore_best_weights=True, verbose=1, patience=10)\n",
    "\n",
    "model_reg = get_model_reg()\n",
    "model_reg.fit(X_train, y_train_reg, epochs=100, batch_size=128, \n",
    "              validation_data=[X_val, y_val_reg], callbacks=[es], verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.048634997103914"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### CRPS ON VALIDATION ###\n",
    "\n",
    "crps(y_val_reg, model_reg.predict(X_val))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.07446661456669396"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### CRPS ON TEST ###\n",
    "\n",
    "crps(y_test_reg, model_reg.predict(X_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.12166914866721108"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### CRPS ON TEST DATA WITH BASELINE MODEL ###\n",
    "\n",
    "crps(y_test_reg, np.repeat(cdf_train, len(X_test)).reshape(-1,max_count))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1f3731df438>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT PREDICTIONS ###\n",
    "\n",
    "_id = 11\n",
    "\n",
    "plt.figure(figsize=(7,5))\n",
    "plt.plot(model_reg.predict(X_test)[_id], label='pred surv f')\n",
    "plt.plot(y_test_reg[_id], label='true surv f')\n",
    "plt.ylabel('probability'); plt.xlabel('casual count')\n",
    "plt.title(pd.to_datetime(test_date.values[_id] + np.timedelta64(test_H.values[_id], 'h')))\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NEURAL NETWORK WITH CLASSIFICATION"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 8645 samples, validate on 2894 samples\n",
      "Epoch 1/100\n",
      "8645/8645 - 2s - loss: 4.8290 - val_loss: 3.9456\n",
      "Epoch 2/100\n",
      "8645/8645 - 1s - loss: 3.8963 - val_loss: 3.8685\n",
      "Epoch 3/100\n",
      "8645/8645 - 1s - loss: 3.7841 - val_loss: 3.8376\n",
      "Epoch 4/100\n",
      "8645/8645 - 2s - loss: 3.7257 - val_loss: 3.8360\n",
      "Epoch 5/100\n",
      "8645/8645 - 1s - loss: 3.6778 - val_loss: 3.8262\n",
      "Epoch 6/100\n",
      "8645/8645 - 1s - loss: 3.6483 - val_loss: 3.8123\n",
      "Epoch 7/100\n",
      "8645/8645 - 1s - loss: 3.6212 - val_loss: 3.7978\n",
      "Epoch 8/100\n",
      "8645/8645 - 1s - loss: 3.6002 - val_loss: 3.8181\n",
      "Epoch 9/100\n",
      "8645/8645 - 1s - loss: 3.5797 - val_loss: 3.7996\n",
      "Epoch 10/100\n",
      "8645/8645 - 1s - loss: 3.5551 - val_loss: 3.7941\n",
      "Epoch 11/100\n",
      "8645/8645 - 1s - loss: 3.5419 - val_loss: 3.7876\n",
      "Epoch 12/100\n",
      "8645/8645 - 1s - loss: 3.5241 - val_loss: 3.7749\n",
      "Epoch 13/100\n",
      "8645/8645 - 1s - loss: 3.5089 - val_loss: 3.7878\n",
      "Epoch 14/100\n",
      "8645/8645 - 1s - loss: 3.4992 - val_loss: 3.8041\n",
      "Epoch 15/100\n",
      "8645/8645 - 1s - loss: 3.4805 - val_loss: 3.7746\n",
      "Epoch 16/100\n",
      "8645/8645 - 1s - loss: 3.4704 - val_loss: 3.7816\n",
      "Epoch 17/100\n",
      "8645/8645 - 1s - loss: 3.4553 - val_loss: 3.7894\n",
      "Epoch 18/100\n",
      "8645/8645 - 1s - loss: 3.4416 - val_loss: 3.7885\n",
      "Epoch 19/100\n",
      "8645/8645 - 1s - loss: 3.4347 - val_loss: 3.8013\n",
      "Epoch 20/100\n",
      "8645/8645 - 1s - loss: 3.4291 - val_loss: 3.7827\n",
      "Epoch 21/100\n",
      "8645/8645 - 1s - loss: 3.4085 - val_loss: 3.8090\n",
      "Epoch 22/100\n",
      "8645/8645 - 1s - loss: 3.3965 - val_loss: 3.8161\n",
      "Epoch 23/100\n",
      "8645/8645 - 1s - loss: 3.3867 - val_loss: 3.8043\n",
      "Epoch 24/100\n",
      "8645/8645 - 1s - loss: 3.3744 - val_loss: 3.8139\n",
      "Epoch 25/100\n",
      "Restoring model weights from the end of the best epoch.\n",
      "8645/8645 - 1s - loss: 3.3656 - val_loss: 3.8204\n",
      "Epoch 00025: early stopping\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.keras.callbacks.History at 0x1f375a14518>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "es = EarlyStopping(monitor='val_loss', mode='auto', restore_best_weights=True, verbose=1, patience=10)\n",
    "\n",
    "model_clas = get_model_clas()\n",
    "model_clas.fit(X_train, y_train_clas, epochs=100, batch_size=32, \n",
    "               validation_data=[X_val, y_val_clas], callbacks=[es], verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.05922218327148239"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### CRPS ON VALIDATION ###\n",
    "\n",
    "crps(np.cumsum(y_val_clas, axis=1), \n",
    "     np.clip(np.cumsum(model_clas.predict(X_val), axis=1), 0, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.09114237247959403"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### CRPS ON TEST ###\n",
    "\n",
    "crps(np.cumsum(y_test_clas, axis=1), \n",
    "     np.clip(np.cumsum(model_clas.predict(X_test), axis=1), 0, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.12166914866721108"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### CRPS ON TEST DATA WITH BASELINE MODEL ###\n",
    "\n",
    "crps(np.cumsum(y_test_clas, axis=1), np.repeat(cdf_train, len(X_test)).reshape(-1,max_count))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1f3774d5400>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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GArcabHTcY3uPjeqmKK0escBmh1mj09xktPdlSIioUV5TQ53XwYsa7Xsrrj3nwA+EWUM3WXltthNorPGRlXJKcmJiCRLI56kyKrt+5k8opiBfQtT27EqORGR0JTkUqC52Vm1/QBzUn2qEtDgzCIi4SnJpcCWqlqq646m/noc6BECEZEuUJJLgZbrcdFWckpyIiLJUpJLgVXbDjCobyETh6V69gFUyYmIdIGSXAqs3L6f2eMGY5EkIlVyIiJhKcl10YHDDWyqrI3oVCWq5EREukBJrotWlMWux81O+UgnLVTJiYiEpSTXRc9v2UtRQfs/MAcAABJkSURBVB6zxg2KZgeq5EREQlOS66LnN+9l9rhB9C7Mj3hPSnIiIslSkuuCvbVH2LCrhrMnDotwL6rkRETCUpLrgsdWV+AOF0wdGd1ONKyXiEhoSnJd8PCqck4fM4DTRg2Ifmeq5EREkqYkF1JV7RHWvVnDxdNGR7sjVXIiIqEpyYW0trwaILq7Ko/RAM0iImEpyYW0prwaMzh9zMBod6RHCEREQlOSC2lN+QEmDS+muFek886iSk5EJDwluRDcnTVvVjO9JOIqLraz2E9VciIiSVOSC2FXTT17Dh5hetSnKgEN6yUiEl7U59py0prgppNpJVHfdIIqOZEscfToUcrLy6mvr093KDmtd+/elJSUUFhYmFB7JbkQ1pQfID/PmDq6G56PUyUnkhXKy8vp378/paWlEU27Je7O3r17KS8vZ8KECQlto9OVIawpr+aUkf27YbxKVMmJZIn6+nqGDh2qBBchM2Po0KFJVctKcklqbGpm1bb9zBnfDacqj6N/OCKZTgkueskeYyW5JK2rqOFQQxNnTRzaTXtUJSci6VFcXJy2fV999dVMnz6d73//+13qR9fkkvTClr0AnDmhm5KchvUSkRRqamoiP78bLrW0obGxkYKCztPOrl27eO6559i2bVuX96lKLkn/s34Xp4wsZnj/Xt20R1VyItK5srIyTj31VK6//nqmT5/OZZddxuHDhwEoLS3l61//Oueccw6//vWv2bx5MwsXLmTOnDmce+65bNy4EYCtW7dy9tlnc8YZZ/CVr3ylzf0cOnSIiy++mBkzZnD66afz4IMPHttHVVUVACtWrGDBggUA3HrrrSxatIgLLriA6667jjPPPJP169cf62/BggWsXLnyuH1ccMEFVFZWMnPmTJ5++ukuHRdVcklYU36AVdsPcMslU7pvp64RT0SyzdceW8+rFTUp7XPK6AF89b1TO2zz2muvcc899zB//nw+9rGPceedd3LzzTcDsVvvn3nmGQDOP/987rrrLiZPnsyLL77Ipz71Kf72t7/x2c9+lhtvvJHrrruOO+64o819/OlPf2L06NH84Q9/AKC6urrT2FeuXMkzzzxDnz59+P73v89DDz3E1772NXbu3ElFRQVz5sw5rv2jjz7KJZdcwiuvvNJp351RJZeE+54to19RPpfPLenGvep0pYgkZuzYscyfPx+Aa6655lhSA7jyyisBqK2t5bnnnuPyyy9n5syZfPKTn2Tnzp0APPvss1x99dUAXHvttW3uY9q0afz1r3/li1/8Ik8//TQDB3Y+KMb73vc++vTpA8AVV1zBr3/9awAeeughLr/88pDfNjGq5BJUebCex9ZU8OEzx9O/d2IPIaaEHiEQyTqdVVxRaX3nYfznfv36AdDc3MygQYParZI6u3vxlFNOYeXKlSxbtowvfelLXHDBBdxyyy0UFBTQ3NwMcMIt/i37BhgzZgxDhw5lzZo1PPjgg/zkJz9J/AuGoEouQUte2M7RJuf6t5d2855VyYlIYrZv387zzz8PwAMPPMA555xzQpsBAwYwYcKEY9WUu7N69WoA5s+fz9KlSwFYsmRJm/uoqKigb9++XHPNNdx8882sWrUKiF2Ta7m29pvf/KbDOK+66iq+9a1vUV1dzbRp00J808QpySXgSGMTS17cznlvG86EYf063yCVVMmJSIJOO+007r//fqZPn86+ffu48cYb22y3ZMkS7rnnHmbMmMHUqVP5/e9/D8APfvAD7rjjDs4444x2r7WtXbuWefPmMXPmTP7jP/6DL3/5ywB89atf5bOf/Sznnntup3dvXnbZZSxdupQrrriiC982MeZZdmPD3LlzfcWKFd26zz+u3cmNS1Zx/8fm8c5Thnfrvtm7GX44G95/N8y4snv3LSIJ27BhA6eddlra9l9WVsYll1zCunXr0hZDd2nrWJvZSnef27qtKrkEvLBlL30K83n7pO56ADyOKjkRkdCU5BLwj7L9zB4/iML8dBwuXZMTkc6Vlpb2iCouWUpynaiuO8rGXTWcUTokvYGokhMRSZqSXCd+9vQW3OHcycPSE0CWXTMVEckkSnId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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT PREDICTIONS ###\n",
    "\n",
    "_id = 11\n",
    "\n",
    "plt.figure(figsize=(7,5))\n",
    "plt.plot(np.clip(np.cumsum(model_clas.predict(X_test)[_id]), 0, 1), label='pred surv f')\n",
    "plt.plot(np.cumsum(y_test_clas[_id]), label='true surv f')\n",
    "plt.ylabel('probability'); plt.xlabel('casual count')\n",
    "plt.title(pd.to_datetime(test_date.values[_id] + np.timedelta64(test_H.values[_id], 'h')))\n",
    "plt.legend()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
